#!/usr/bin/env perl
use warnings;
use strict;
###############################################################################
# By Wenchao Lin
# Title:gff2intron.pl
# Purpose:Find all introns from a gtf file 
###############################################################################
# Code to handle help menu and man page
###############################################################################
use Getopt::Long;
use Pod::Usage;
my $man = 0;
my $help = 0;
my $gff_version = 3;
GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
pod2usage(2) if $help;
pod2usage(-verbose => 2) if $man;
pod2usage("$0: No files given.")  if ((@ARGV == 0) && (-t STDIN));

###############################################################################
# Automatically extract compressed files
###############################################################################
@ARGV = map { s/(.*\.gz)\s*$/pigz -dc < $1|/; s/(.*\.bz2)\s*$/pbzip2 -dc < $1|/;$_ } @ARGV;
###############################################################################


my $flag = 0;
my $last = "";

while(<>){
    next if /^#/;
    last if /^##FASTA/;
    chomp;
    my @a = split /\s+/;
    my $t =  ($a[6] eq "+") ? 0 : 1;

    if($a[2] eq "exon" and $flag == 0){
        printf("%s\t%s\t",$a[0],$a[4-$t]+1);
        $flag = 1;
        $last = $a[9];
        next;
    }
    if($a[2] eq "exon" and $flag ==1 and $last eq $a[9]){
        printf("%s\n",$a[3+$t]-1);
        $flag = 0;
        $last = $a[9];
        next;
    }
    if($a[2] eq "exon" and $last ne $a[9]){
        printf("%s\t%s\t",$a[0],$a[4-$t]+1);
        $flag = 1;
        $last = $a[9];
        next;
    }
}
###############################################################################
# Help Documentation
###############################################################################

=head1 NAME

gff2intron.pl 

print all the introns from the gtf file

=head1 SYNOPSIS

gff2data_frame.pl [options] [file ...]

Options:
      -help
      -man               for more info

=head1 OPTIONS

=over 8

=item B<-help>

Print a brief help message and exits.

=item B<-man>

Prints the manual page and exits.

=back

=head1 DESCRIPTION

B<gff2intron.pl>

=cut

